#ifndef Adc_sensor_H
#define Adc_sensor_H

#define ROOMADCON _01_AD_INPUT_CHANNEL_1 /* 环温 */
#define TUBEADCON _00_AD_INPUT_CHANNEL_0 /* 管温 */

// #define TEMP_SENSOR_4100K 1 // TCL天井机、座吊机感温包
#define TEMP_SENSOR_3950K 2 // 亚丁感温包

#ifdef Adc_sensor_Variable
#define Adc_sensor_Extern

#ifdef TEMP_SENSOR_3950K
/*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****
-20 ~ 99度温度AD表，3950K，15K，20K
*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****/
const U16 TempTab[] =
    {
        0x0061, 0x0066, 0x006B, 0x0071, 0x0076, 0x007C, 0x0082, 0x0089, 0x008F, 0x0096, // -20C -> -11C
        0x009D, 0x00A4, 0x00AC, 0x00B4, 0x00BC, 0x00C4, 0x00CC, 0x00D5, 0x00DE, 0x00E7, // -10C -> 0C
        0x00F0, 0x00F9, 0x0103, 0x010D, 0x0117, 0x0121, 0x012B, 0x0136, 0x0140, 0x014B, // 00C -> 09C
        0x0156, 0x0161, 0x016C, 0x0177, 0x0183, 0x018E, 0x0199, 0x01A5, 0x01B0, 0x01BC, // 10C -> 19C
        0x01C7, 0x01D2, 0x01DE, 0x01E9, 0x01F5, 0x0200, 0x020B, 0x0216, 0x0221, 0x022C, // 20C -> 29C
        0x0237, 0x0242, 0x024D, 0x0257, 0x0262, 0x026C, 0x0276, 0x0280, 0x028A, 0x0293, // 30C -> 39C
        0x029D, 0x02A6, 0x02AF, 0x02B8, 0x02C1, 0x02C9, 0x02D2, 0x02DA, 0x02E2, 0x02EA, // 40C -> 49C
        0x02F2, 0x02F9, 0x0301, 0x0308, 0x030F, 0x0315, 0x031C, 0x0323, 0x0329, 0x032F, // 50C -> 59C
        0x0335, 0x033B, 0x0340, 0x0346, 0x034B, 0x0350, 0x0355, 0x035A, 0x035F, 0x0364, // 60C -> 69C
        0x0368, 0x036D, 0x0371, 0x0375, 0x0379, 0x037D, 0x0381, 0x0384, 0x0388, 0x038B, // 70C -> 79C
        0x038E, 0x0392, 0x0395, 0x0398, 0x039B, 0x039E, 0x03A0, 0x03A3, 0x03A6, 0x03A8, // 80C -> 89C
        0x03AB, 0x03AD, 0x03AF, 0x03B2, 0x03B4, 0x03B6, 0x03B8, 0x03BA, 0x03BC, 0xFFFF, // 90C -> 99C
};
#endif // TEMP_SENSOR_3950K

#ifdef TEMP_SENSOR_4100K
/*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****
-20 ~ 99度温度AD表，4100K，10K
*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****.*****/
const U16 TempTab[] =
    {
        0x0059, 0x005E, 0x0064, 0x0069, 0x006F, 0x0074, 0x007B, 0x0081, 0x0087, 0x008E, // -20C -> -11C
        0x0095, 0x009D, 0x00A4, 0x00AC, 0x00B4, 0x00BC, 0x00C5, 0x00CD, 0x00D6, 0x00DF, // -10C -> 0C
        0x00E9, 0x00F2, 0x00FC, 0x0106, 0x0110, 0x011B, 0x0125, 0x0130, 0x013B, 0x0146, // 00C -> 09C
        0x0151, 0x015C, 0x0168, 0x0173, 0x017F, 0x018A, 0x0196, 0x01A2, 0x01AE, 0x01B9, // 10C -> 19C
        0x01C5, 0x01D1, 0x01DD, 0x01E9, 0x01F4, 0x0200, 0x020C, 0x0217, 0x0223, 0x022E, // 20C -> 29C
        0x0239, 0x0244, 0x024F, 0x025A, 0x0265, 0x026F, 0x027A, 0x0284, 0x028E, 0x0298, // 30C -> 39C
        0x02A2, 0x02AB, 0x02B5, 0x02BE, 0x02C7, 0x02D0, 0x02D8, 0x02E1, 0x02E9, 0x02F1, // 40C -> 49C
        0x02F9, 0x0301, 0x0308, 0x030F, 0x0316, 0x031D, 0x0324, 0x032B, 0x0330, 0x0337, // 50C -> 59C
        0x033D, 0x0343, 0x0349, 0x034E, 0x0354, 0x0359, 0x035E, 0x0363, 0x0367, 0x036C, // 60C -> 69C
        0x0371, 0x0375, 0x0379, 0x037D, 0x0381, 0x0385, 0x0389, 0x038C, 0x0390, 0x0393, // 70C -> 79C
        0x0396, 0x0399, 0x039D, 0x039F, 0x03A2, 0x03A5, 0x03A8, 0x03AA, 0x03AD, 0x03AF, // 80C -> 89C
        0x03B2, 0x03B4, 0x03B6, 0x03B8, 0x03BA, 0x03BC, 0x03BE, 0x03C0, 0x03C2, 0xFFFF, // 90C -> 99C
};
#endif // TEMP_SENSOR_4100K

#else
#define Adc_sensor_Extern extern
#endif

typedef struct
{
    S8 repair;    /* 设置温度补偿值  */
    S8 repairAct; /* 运行温度补偿值  */

    U16 room;    /* (实际环温值 + 40） * 10 */
    U16 roomAct; /* 实际环温值 * 10 */

    U16 tube;    /* (实际管温值 + 40） * 10 */
    U16 tubeAct; /* 实际管温值 * 10 */

    U16 outdoor;     /* (实际室外环温值 + 40) * 10 */
    U16 out_tube;    /* (实际室外铜管温值 + 40) * 10 */
    U16 out_exha;    /* (实际室外排气温值 + 40) * 10 */
    U16 comp_ipm;    /* (实际室外压缩机温值 + 40) * 10 */
    U16 gas_pipe;    /* (实际室外压缩机温值 + 40) * 10 */
    U16 liquid_pipe; /* (实际室外压缩机温值 + 40) * 10 */

    U16 IFeel; /* 实际环温值 * 10 */

    U16 wireCtrl; /* (实际环温值 + 40） * 10 */
} temp_typeDef;

extern temp_typeDef temp;

Adc_sensor_Extern U16 timer_IFeelSec; /* 随身感计时 */

Adc_sensor_Extern ram_byte ADFlag;
#define f_ADCEnd ADFlag.bit.b0 // 感温包检测完成

void ADConvert(void);
U16 ADCal(U16, U8);
void TempJudge(void);
void tempErrCheck(U16, U16, U8);
#endif
